package com.gljx.web.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.gljx.web.Entity.Handle;
import com.gljx.web.Entity.Power;
import com.gljx.web.Entity.Role;
import org.springframework.stereotype.Component;

@Component
public interface PowerMapper {

	/**
	 * 查用户
	 * @param PID
	 * @return
	 * @author LiXiang  @date 2017年11月7日 上午11:09:43
	 */
	List<Map<String,Object>> findAllBIUser(@Param("PID")String PID);

	/**
	 * 查角色和特有权限
	 * @param id
	 * @param projectId
	 * @return
	 * @author LiXiang  @date 2017年11月7日 上午11:10:19
	 */
	List<Map<String,Object>> findRoleByUserId(@Param("id")Integer id, @Param("projectId")String projectId);

	/**
	 * 查权限
	 * @param id
	 * @param type
	 * @param projectId
	 * @return
	 * @author LiXiang  @date 2017年11月7日 上午11:10:58
	 */
	List<Map<String,Object>> findHandleByRoleId(@Param("id")Integer id,
												@Param("projectId")String projectId,
												@Param("type")String type);


	/**
	 *
	 * @param roles   角色组
	 * @param PID     项目ID
	 * @param userId 当前用户id
	 * @return
	 * @author LiXiang  @date 2017年11月7日 下午3:15:04
	 */
	Integer insertRoleByNowUser(@Param("list")List<Role> roles,
								@Param("PID")String PID,
								@Param("userId")Integer userId);

	/**
	 * 依据角色ID添加权限
	 * @return
	 * @author LiXiang  @date 2017年11月8日 上午11:42:50
	 */
	Integer insertHandleByRoleId(@Param("list")List<Handle> handle,
								 @Param("PID")String PID,
								 @Param("roleId")Integer roleId);

	/**
	 * 根据用户添加特有权限
	 * @param handle
	 * @param PID
	 * @param roleId
	 * @return
	 * @author LiXiang  @date 2017年11月9日 下午4:24:04
	 */
	Integer insertUserPower(@Param("list")List<Handle> handle,
							@Param("PID")String PID,
							@Param("userId")Integer roleId);

	/**
	 * 删除该角色关联权限
	 * @return
	 * @author LiXiang  @date 2017年11月8日 下午1:42:36
	 */
	Integer deleteHandleByRoleId(@Param("list")List<Handle> handle,
								 @Param("roleId")Integer roleId);

	/**
	 * 删除该用户 关联的角色
	 * @return
	 * @author LiXiang  @date 2017年11月9日 下午2:50:37
	 */
	Integer deleteRoleByUserId(@Param("list")List<Role> roles,
							   @Param("userId")Integer userId);

	/**
	 * 删除用户关联角色和特有权
	 * @param userId
	 * @return
	 * @author LiXiang  @date 2017年11月9日 下午5:10:39
	 */
	Integer deleteRoleAndPower(@Param("list")List<Power> powers,
							   @Param("userId")Integer userId);

	/**
	 * 依据角色ID查权限
	 * @param PID
	 * @param id
	 * @return
	 * @author LiXiang  @date 2017年11月8日 上午9:13:34
	 */
	List<Handle> findHandleById(@Param("projectId")String PID,
								@Param("id")Integer id,
								@Param("name")String name);


	/*List<Power> findPowerTree(@Param("userId")Integer userId,
							  @Param("PID")String projectId);*/


	List<Power> findPowerTreebyUser(@Param("userId")Integer userId,
								  @Param("projectId")String projectId);
	/**
	 * 获取特有权限和角色
	 * @param userId
	 * @param projectId
	 * @return
	 * @author LiXiang  @date 2017年11月9日 上午9:41:52
	 */
	List<Power> findSpowerAndRole(@Param("userId")Integer userId,
								  @Param("PID")String projectId);

	Map <String,Object > InserUsersAddRoles (Map<String,Object> data);
}